home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
plnk081.zip
/
pilot-link.0.8.1
/
Java
/
Interface.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-08-09
|
69KB
|
2,343 lines
#include "Pdapilot_calls.h"
#include "Pdapilot_Database.h"
#include "Pdapilot_Record.h"
#include "Pdapilot_Pref.h"
#include "Pdapilot_Dlp.h"
#include "Pdapilot_AppBlock.h"
#include "Pdapilot_SortBlock.h"
#include "Pdapilot_Resource.h"
#include "Pdapilot_CardInfo.h"
#include "Pdapilot_UserInfo.h"
#include "Pdapilot_SysInfo.h"
#include "Pdapilot_NetInfo.h"
#include "Pdapilot_CategoryAppBlock.h"
#include "Pdapilot_memo_Record.h"
#include "Pdapilot_memo_AppBlock.h"
#include "Pdapilot_todo_Record.h"
#include "Pdapilot_todo_AppBlock.h"
#include "Pdapilot_address_Record.h"
#include "Pdapilot_address_AppBlock.h"
#include "Pdapilot_appointment_Record.h"
#include "Pdapilot_appointment_AppBlock.h"
#include "Pdapilot_appointment_repeat.h"
#include "Pdapilot_appointment_time.h"
#include "Pdapilot_mail_Record.h"
#include "Pdapilot_mail_AppBlock.h"
#include "Pdapilot_mail_SyncPref.h"
#include "Pdapilot_mail_SignaturePref.h"
#include "Pdapilot_mail_sort.h"
#include "Pdapilot_mail_sync.h"
#include "Pdapilot_expense_Record.h"
#include "Pdapilot_expense_AppBlock.h"
#include "Pdapilot_expense_Pref.h"
#include "Pdapilot_expense_type.h"
#include "Pdapilot_expense_payment.h"
#include "Pdapilot_expense_distance.h"
#include "Pdapilot_expense_sort.h"
#include "Pdapilot_expense_CustomCurrency.h"
#include "Pdapilot_RecordID.h"
#include "Pdapilot_Char4.h"
#include "Pdapilot_DBInfo.h"
#include "Pdapilot_File.h"
#include "java_util_Date.h"
#include "pi-source.h"
#include "pi-dlp.h"
#include "pi-socket.h"
#include "pi-memo.h"
#include "pi-address.h"
#include "pi-datebook.h"
#include "pi-todo.h"
#include "pi-mail.h"
#include "pi-expense.h"
#include "pi-file.h"
#include <signal.h>
#if (JAVAMAJOR>1) || (JAVAMINOR>0)
# define NEW
#else
# define OLD
#endif
#ifdef OLD
# define javaint_t long
#else
# define javaint_t int32_t
#endif
/** Sun should be ashamed for the 1.0 JNI!
*/
static void throwDlpException(int code)
{
execute_java_static_method(0, FindClass(0, "Pdapilot/DlpException",1),
"kickWillyScuggins", "(I)V", (long)code);
}
static void throwCancelSyncException()
{
execute_java_static_method(0, FindClass(0, "Pdapilot/CancelSyncException",1),
"kickWillyScuggins", "()V");
}
static void throwIOException(int code)
{
SignalError(0, "java/lang/IOException", 0);
}
static HArrayOfByte * getByteArray(long length)
{
return (HArrayOfByte*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"getByteArray", "(I)[B", (long)length);
}
static HArrayOfObject * makeRecordIDArray(long length)
{
return (HArrayOfObject*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"makeRecordIDArray", "(I)[LPdapilot/RecordID;", (long)length);
}
static HArrayOfObject * makeStringArray(long length)
{
return (HArrayOfObject*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"makeStringArray", "(I)[Ljava/lang/Object;", (long)length);
}
static HArrayOfObject * makeDateArray(long length)
{
return (HArrayOfObject*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"makeDateArray", "(I)[Ljava/lang/Object;", (long)length);
}
static HArrayOfInt * makeIntArray(long length)
{
return (HArrayOfInt*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"makeIntArray", "(I)[I", (long)length);
}
/*static HObject* makeBooleanArray(long length) Ptui!
{
return (HObject*)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"makeBooleanArray", "(I)[Z", (long)length);
}*/
static long getArrayLength(struct HArrayOfByte *b)
{
return (long)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"getArrayLength", "([B)I", b);
}
static long getObjectArrayLength(struct HArrayOfObject *b)
{
return (long)execute_java_static_method(0, FindClass(0, "Pdapilot/calls",1),
"getObjectArrayLength", "([Ljava/lang/Object;)I", b);
}
static Hjava_util_Date * makeJavaDate(time_t v) {
if (v < 18000) {
return 0;
} else {
struct tm * tm = localtime(&v);
return (Hjava_util_Date*)execute_java_constructor(0, "java/util/Date", 0,
"(IIIIII)",
tm->tm_year, tm->tm_mon, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
}
static Hjava_util_Date * makeJavaDateTm(struct tm * tm) {
return (Hjava_util_Date*)execute_java_constructor(0, "java/util/Date", 0,
"(IIIIII)",
tm->tm_year, tm->tm_mon, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
static HPdapilot_Char4 * makeJavaChar4(long id) {
return (HPdapilot_Char4*)execute_java_constructor(
0, "Pdapilot/Char4", 0,
"(I)", id);
}
static unsigned long getJavaChar4(HPdapilot_Char4 * id) {
if (id)
return unhand(id)->value;
else
return 0;
}
static HPdapilot_RecordID * makeJavaRecordID(long id) {
return (HPdapilot_RecordID*)execute_java_constructor(
0, "Pdapilot/RecordID", 0,
"(I)", id);
}
static int getJavaRecordID(HPdapilot_RecordID * id) {
if (id)
return unhand(id)->value;
else
return 0;
}
static time_t readJavaDate(Hjava_util_Date * date) {
struct tm tm;
tm.tm_year = (int)execute_java_dynamic_method(0, (HObject*)date, "getYear", "()I");
tm.tm_mon = (int)execute_java_dynamic_method(0, (HObject*)date, "getMonth", "()I");
tm.tm_mday = (int)execute_java_dynamic_method(0, (HObject*)date, "getDay", "()I");
tm.tm_hour = (int)execute_java_dynamic_method(0, (HObject*)date, "getHours", "()I");
tm.tm_min = (int)execute_java_dynamic_method(0, (HObject*)date, "getMinutes", "()I");
tm.tm_sec = (int)execute_java_dynamic_method(0, (HObject*)date, "getSeconds", "()I");
return mktime(&tm);
}
static struct tm * readJavaDateTm(Hjava_util_Date * date) {
static struct tm tm;
tm.tm_year = (int)execute_java_dynamic_method(0, (HObject*)date, "getYear", "()I");
tm.tm_mon = (int)execute_java_dynamic_method(0, (HObject*)date, "getMonth", "()I");
tm.tm_mday = (int)execute_java_dynamic_method(0, (HObject*)date, "getDay", "()I");
tm.tm_hour = (int)execute_java_dynamic_method(0, (HObject*)date, "getHours", "()I");
tm.tm_min = (int)execute_java_dynamic_method(0, (HObject*)date, "getMinutes", "()I");
tm.tm_sec = (int)execute_java_dynamic_method(0, (HObject*)date, "getSeconds", "()I");
return &tm;
}
extern javaint_t Pdapilot_calls_pi_socket(struct HPdapilot_calls*self, javaint_t domain, javaint_t type, javaint_t protocol)
{
int result = pi_socket(domain, type, protocol);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_bind(struct HPdapilot_calls*self, javaint_t socket, struct Hjava_lang_String * address)
{
javaint_t len = javaStringLength(address)+3;
struct pi_sockaddr * a = malloc(len);
javaint_t result;
a->pi_family = PI_AF_SLP;
javaString2CString(address, a->pi_device, len-2);
result = pi_bind(socket, (struct sockaddr*)a, len);
free(a);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_listen(struct HPdapilot_calls*self, javaint_t socket, javaint_t backlog)
{
int result = pi_listen(socket, backlog);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_accept(struct HPdapilot_calls*self, javaint_t socket)
{
int result=pi_accept(socket, 0, 0);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_read(struct HPdapilot_calls*self, javaint_t socket, HArrayOfByte *b, javaint_t len)
{
int result=pi_read(socket, unhand(b)->body, len);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_write(struct HPdapilot_calls*self, javaint_t socket, HArrayOfByte * b, javaint_t len)
{
int result=pi_write(socket, unhand(b)->body, len);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_close(struct HPdapilot_calls * self, javaint_t socket)
{
int result=pi_close(socket);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_version(struct HPdapilot_calls * self, javaint_t socket)
{
int result=pi_version(socket);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_watchdog(struct HPdapilot_calls * self, javaint_t socket, javaint_t interval)
{
int result=pi_watchdog(socket, interval);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_pi_tickle(struct HPdapilot_calls * self, javaint_t socket)
{
int result=pi_tickle(socket);
if (result<0)
throwIOException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_OpenDB(struct HPdapilot_calls * self, javaint_t socket, javaint_t card, javaint_t mode, Hjava_lang_String * name)
{
int handle;
int result = dlp_OpenDB(socket, card, mode, makeCString(name), &handle);
if (result < 0) {
throwDlpException(result);
return result;
}
return handle;
}
extern javaint_t Pdapilot_calls_dlp_CreateDB(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_Char4 * creator, HPdapilot_Char4 * type, javaint_t card, javaint_t flags, javaint_t version, Hjava_lang_String * name)
{
int handle;
int result = dlp_CreateDB(socket, unhand(creator)->value, unhand(creator)->value, card, flags, version, makeCString(name), &handle);
if (result < 0) {
throwDlpException(result);
return result;
}
return handle;
}
extern javaint_t Pdapilot_calls_dlp_DeleteDB(struct HPdapilot_calls * self, javaint_t socket, javaint_t card, Hjava_lang_String * name)
{
int result = dlp_DeleteDB(socket, card, makeCString(name));
if (result < 0) {
throwDlpException(result);
}
return result;
}
extern Hjava_util_Date * Pdapilot_calls_dlp_GetSysDateTime(struct HPdapilot_calls * self, javaint_t socket)
{
time_t t;
int result = dlp_GetSysDateTime(socket, &t);
if (result < 0) {
throwDlpException(result);
return 0;
}
return makeJavaDate(t);
}
extern javaint_t Pdapilot_calls_dlp_SetSysDateTime(struct HPdapilot_calls * self, javaint_t socket, Hjava_util_Date * date)
{
time_t t;
int result;
t = readJavaDate(date);
result = dlp_SetSysDateTime(socket, t);
if (result < 0) {
throwDlpException(result);
}
return result;
}
extern javaint_t Pdapilot_calls_dlp_AddSyncLogEntry(struct HPdapilot_calls * self, javaint_t socket, Hjava_lang_String * entry)
{
int result = dlp_AddSyncLogEntry(socket, makeCString(entry));
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_ResetSystem(struct HPdapilot_calls * self, javaint_t socket)
{
int result = dlp_ResetSystem(socket);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_EndOfSync(struct HPdapilot_calls * self, javaint_t socket, javaint_t status)
{
int result = dlp_EndOfSync(socket, status);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_MoveCategory(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t from, javaint_t to)
{
int result = dlp_MoveCategory(socket, handle, from, to);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_DeleteRecord(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t all, HPdapilot_RecordID * id)
{
int result = dlp_DeleteRecord(socket, handle, all, getJavaRecordID(id));
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_DeleteCategory(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t category)
{
int result = dlp_DeleteCategory(socket, handle, category);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_ReadOpenDBInfo(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle)
{
int count;
int result = dlp_ReadOpenDBInfo(socket, handle, &count);
if (result < 0)
throwDlpException(result);
return count;
}
extern javaint_t Pdapilot_calls_dlp_DeleteResource(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t all, HPdapilot_Char4 * type, javaint_t id)
{
int result = dlp_DeleteResource(socket, handle, all, unhand(type)->value, id);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_ResetSyncFlags(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle)
{
int result = dlp_ResetSyncFlags(socket, handle);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_CleanUpDatabase(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle)
{
int result = dlp_CleanUpDatabase(socket, handle);
if (result < 0)
throwDlpException(result);
return result;
}
extern HPdapilot_CardInfo * Pdapilot_calls_dlp_ReadStorageInfo(struct HPdapilot_calls * self, javaint_t socket, javaint_t card)
{
HPdapilot_CardInfo * output = NULL;
struct CardInfo c;
int result = dlp_ReadStorageInfo(socket, card, &c);
if (result == -5) {
return 0;
} else if (result < 0) {
throwDlpException(result);
return 0;
}
output = (HPdapilot_CardInfo*)execute_java_constructor(0,
"Pdapilot/CardInfo", 0, "()");
unhand(output)->name = makeJavaString(c.name, strlen(c.name));
unhand(output)->manufacturer = makeJavaString(c.manufacturer, strlen(c.manufacturer));
unhand(output)->card = c.card;
unhand(output)->romSize = c.romSize;
unhand(output)->ramSize = c.ramSize;
unhand(output)->ramFree = c.ramFree;
unhand(output)->more = c.more;
unhand(output)->creation = makeJavaDate(c.creation);
return output;
}
extern HPdapilot_SysInfo * Pdapilot_calls_dlp_ReadSysInfo(struct HPdapilot_calls * self, javaint_t socket)
{
HPdapilot_SysInfo * output = NULL;
struct SysInfo s;
int result = dlp_ReadSysInfo(socket, &s);
if (result < 0) {
throwDlpException(result);
return 0;
}
output = (HPdapilot_SysInfo*)execute_java_constructor(0,
"Pdapilot/SysInfo", 0, "()");
unhand(output)->romVersion = s.romVersion;
unhand(output)->locale = s.locale;
unhand(output)->name = makeJavaString(s.name, s.nameLength);
return output;
}
extern HPdapilot_DBInfo * Pdapilot_calls_dlp_ReadDBList(struct HPdapilot_calls * self, javaint_t socket, javaint_t card, javaint_t flags, javaint_t start)
{
HPdapilot_DBInfo * output = NULL;
struct DBInfo i;
int result = dlp_ReadDBList(socket, card, flags, start, &i);
if (result == -5)
return 0;
else if (result < 0) {
throwDlpException(result);
return 0;
}
output = (HPdapilot_DBInfo*)execute_java_constructor(0,
"Pdapilot/DBInfo", 0, "()");
unhand(output)->flagReadOnly = !!(i.flags & dlpDBFlagReadOnly);
unhand(output)->flagResource = !!(i.flags & dlpDBFlagResource);
unhand(output)->flagBackup = !!(i.flags & dlpDBFlagBackup);
unhand(output)->flagOpen = !!(i.flags & dlpDBFlagOpen);
unhand(output)->flagAppInfoDirty = !!(i.flags & dlpDBFlagAppInfoDirty);
unhand(output)->flagNewer = !!(i.flags & dlpDBFlagNewer);
unhand(output)->flagReset = !!(i.flags & dlpDBFlagReset);
unhand(output)->flagExcludeFromSync = !!(i.miscFlags & dlpDBMiscFlagExcludeFromSync);
unhand(output)->index = i.index;
unhand(output)->version = i.version;
unhand(output)->modnum = i.modnum;
unhand(output)->type = makeJavaChar4(i.type);
unhand(output)->creator = makeJavaChar4(i.creator);
unhand(output)->createDate = makeJavaDate(i.createDate);
unhand(output)->modifyDate = makeJavaDate(i.modifyDate);
unhand(output)->backupDate = makeJavaDate(i.backupDate);
unhand(output)->name = makeJavaString(i.name, strlen(i.name));
unhand(output)->card = card;
unhand(output)->more = i.more;
return output;
}
extern HPdapilot_UserInfo * Pdapilot_calls_dlp_ReadUserInfo(struct HPdapilot_calls * self, javaint_t socket)
{
HPdapilot_UserInfo * output = NULL;
struct PilotUser u;
int result = dlp_ReadUserInfo(socket, &u);
if (result < 0) {
throwDlpException(result);
return 0;
}
output = (HPdapilot_UserInfo*)execute_java_constructor(0,
"Pdapilot/UserInfo", 0, "()");
unhand(output)->username = makeJavaString(u.username, strlen(u.username));
unhand(output)->userID = u.userID;
unhand(output)->viewerID = u.viewerID;
unhand(output)->lastSyncPC = u.lastSyncPC;
unhand(output)->password= getByteArray(u.passwordLength);
memcpy(unhand(unhand(output)->password)->body, u.password, u.passwordLength);
unhand(output)->successfulSyncDate = makeJavaDate(u.successfulSyncDate);
unhand(output)->lastSyncDate = makeJavaDate(u.lastSyncDate);
return output;
}
extern javaint_t Pdapilot_calls_dlp_WriteUserInfo(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_UserInfo * user)
{
struct PilotUser u;
int result;
u.userID = unhand(user)->userID;
u.viewerID = unhand(user)->viewerID;
u.lastSyncPC = unhand(user)->lastSyncPC;
u.passwordLength = getArrayLength(unhand(user)->password);
memcpy(u.password, unhand(unhand(user)->password)->body, u.passwordLength);
u.successfulSyncDate = readJavaDate(unhand(user)->successfulSyncDate);
u.lastSyncDate = readJavaDate(unhand(user)->lastSyncDate);
javaString2CString(unhand(user)->username, u.username, 127);
result = dlp_WriteUserInfo(socket, &u);
if (result < 0) {
throwDlpException(result);
}
return result;
}
extern HPdapilot_NetInfo * Pdapilot_calls_dlp_ReadNetSyncInfo(struct HPdapilot_calls * self, javaint_t socket)
{
HPdapilot_NetInfo * output = NULL;
struct NetSyncInfo i;
int result = dlp_ReadNetSyncInfo(socket, &i);
if (result < 0) {
throwDlpException(result);
return 0;
}
output = (HPdapilot_NetInfo*)execute_java_constructor(0,
"Pdapilot/NetInfo", 0, "()");
unhand(output)->lanSync = i.lanSync;
unhand(output)->hostName = makeJavaString(i.hostName, strlen(i.hostName));
unhand(output)->hostAddress = makeJavaString(i.hostAddress, strlen(i.hostAddress));
unhand(output)->hostSubnetMask = makeJavaString(i.hostSubnetMask, strlen(i.hostSubnetMask));
return output;
}
extern javaint_t Pdapilot_calls_dlp_WriteNetSyncInfo(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_NetInfo * info)
{
struct NetSyncInfo i;
int result;
i.lanSync = unhand(info)->lanSync;
javaString2CString(unhand(info)->hostName, i.hostName, 256);
javaString2CString(unhand(info)->hostAddress, i.hostAddress, 40);
javaString2CString(unhand(info)->hostSubnetMask, i.hostSubnetMask, 40);
result = dlp_WriteNetSyncInfo(socket, &i);
if (result < 0) {
throwDlpException(result);
}
return result;
}
extern javaint_t Pdapilot_calls_dlp_OpenConduit(struct HPdapilot_calls * self, javaint_t socket)
{
int result = dlp_OpenConduit(socket);
if (result == dlpErrSync)
throwCancelSyncException();
else if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_CloseDB(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle)
{
int result;
result = dlp_CloseDB(socket, handle);
if (result<0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_ResetDBIndex(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle)
{
int result;
result = dlp_ResetDBIndex(socket, handle);
if (result<0)
throwDlpException(result);
return result;
}
extern Hjava_lang_String * Pdapilot_calls_dlp_strerror(struct HPdapilot_calls *self, javaint_t error)
{
char * result = dlp_strerror(error);
if (!result)
result = "Unknown DLP error";
return makeJavaString(result, strlen(result));
}
extern HPdapilot_Record * Pdapilot_calls_dlp_ReadRecordByIndex(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t index, HPdapilot_Database * dbClass)
{
int attr, cat;
recordid_t id;
char * buffer = malloc(0xffff);
int len;
HPdapilot_Record * output = NULL;
int result = dlp_ReadRecordByIndex(socket, handle, index, buffer, &id, &len, &attr, &cat);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HArrayOfByte * Pdapilot_calls_dlp_CallApplication(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_Char4 * creator, javaint_t type, javaint_t action, HArrayOfByte * outgoing_data, HArrayOfInt * retcode)
{
char * buffer = malloc(0xffff);
int len;
unsigned long ret;
HArrayOfByte * incoming_data = 0;
int result = dlp_CallApplication(socket, getJavaChar4(creator), type, action, getArrayLength(outgoing_data), unhand(outgoing_data)->body, &ret, 0xffff, &len, buffer);
if (result >= 0) {
incoming_data = getByteArray(len);
memcpy(unhand(incoming_data)->body, buffer, len);
unhand(retcode)->body[0] = ret;
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return incoming_data;
}
extern HPdapilot_Record * Pdapilot_calls_dlp_ReadNextModifiedRec(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Database * dbClass)
{
int attr, cat, index;
recordid_t id;
char * buffer = malloc(0xffff);
int len;
HPdapilot_Record * output = NULL;
int result = dlp_ReadNextModifiedRec(socket, handle, buffer, &id, &index, &len, &attr, &cat);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Record * Pdapilot_calls_dlp_ReadNextModifiedRecInCategory(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t cat, HPdapilot_Database * dbClass)
{
int attr, index;
recordid_t id;
char * buffer = malloc(0xffff);
int len;
HPdapilot_Record * output = NULL;
int result = dlp_ReadNextModifiedRecInCategory(socket, handle, cat, buffer, &id, &index, &len, &attr);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Record * Pdapilot_calls_dlp_ReadNextRecInCategory(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t cat, HPdapilot_Database * dbClass)
{
int attr, index;
recordid_t id;
char * buffer = malloc(0xffff);
int len;
HPdapilot_Record * output = NULL;
int result = dlp_ReadNextRecInCategory(socket, handle, cat, buffer, &id, &index, &len, &attr);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_AppBlock * Pdapilot_calls_dlp_ReadAppBlock(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Database * dbClass)
{
char * buffer = malloc(0xffff);
int len;
HPdapilot_AppBlock * output = NULL;
int result = dlp_ReadAppBlock(socket, handle, 0, buffer, 0xffff);
if (result >= 0) {
HArrayOfByte * a;
len = result;
a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_AppBlock*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newAppBlock", "([B)LPdapilot/AppBlock;",
a);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Pref * Pdapilot_calls_dlp_ReadAppPreference(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_Char4 * creator, javaint_t id, javaint_t backup, HPdapilot_Database * dbClass)
{
char * buffer = malloc(0xffff);
int len, version;
HPdapilot_Pref * output = NULL;
int result = dlp_ReadAppPreference(socket, getJavaChar4(creator), id, backup, 0xffff, buffer, &len, &version);
if (result >= 0) {
HArrayOfByte * a;
a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Pref*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newPref", "([BLPdapilot/Char4;IIZ)LPdapilot/Pref;",
a, creator, id, version, backup);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern javaint_t Pdapilot_calls_dlp_ReadFeature(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_Char4 * creator, javaint_t id)
{
long feature;
int result = dlp_ReadFeature(socket, getJavaChar4(creator), id, &feature);
if (result < 0)
throwDlpException(result);
return feature;
}
extern HArrayOfObject * Pdapilot_calls_dlp_ReadRecordIDList(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t sort, javaint_t start, javaint_t max)
{
recordid_t * l = malloc(sizeof(recordid_t)*max);
int count;
int result;
HArrayOfObject * output = 0;
int i;
result = dlp_ReadRecordIDList(socket, handle, sort, start, max, l, &count);
if (result < 0)
throwDlpException(result);
else {
output = makeRecordIDArray(count);
if (output) {
for (i=0;i<count;i++) {
unhand(output)->body[i] = (HObject*)makeJavaRecordID(l[i]);
}
}
}
free(l);
return output;
}
extern HPdapilot_SortBlock * Pdapilot_calls_dlp_ReadSortBlock(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Database * dbClass)
{
char * buffer = malloc(0xffff);
int len;
HPdapilot_SortBlock * output = NULL;
int result = dlp_ReadSortBlock(socket, handle, 0, buffer, 0xffff);
if (result >= 0) {
HArrayOfByte * a;
len = result;
a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_SortBlock*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newSortBlock", "([B)LPdapilot/SortBlock;",
a);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Record * Pdapilot_calls_dlp_ReadRecordByID(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_RecordID * id, HPdapilot_Database * dbClass)
{
int attr, cat;
char * buffer = malloc(0xffff);
int len;
int index;
HPdapilot_Record * output = NULL;
int result = dlp_ReadRecordById(socket, handle, getJavaRecordID(id), buffer, &index, &len, &attr, &cat);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, id, (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Resource * Pdapilot_calls_dlp_ReadResourceByType(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Char4 * type, javaint_t id, HPdapilot_Database * dbClass)
{
char * buffer = malloc(0xffff);
int len;
int index;
HPdapilot_Resource * output = NULL;
int result = dlp_ReadResourceByType(socket, handle, unhand(type)->value, id, buffer, &index, &len);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Resource*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newResource", "([BLPdapilot/Char4;II)LPdapilot/Resource;",
a, type, (javaint_t)id, (javaint_t)index);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern HPdapilot_Resource * Pdapilot_calls_dlp_ReadResourceByIndex(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, javaint_t index, HPdapilot_Database * dbClass)
{
long type;
char * buffer = malloc(0xffff);
int len, id;
HPdapilot_Resource * output = NULL;
int result = dlp_ReadResourceByIndex(socket, handle, index, buffer, &type, &id, &len);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Resource*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newResource", "([BLPdapilot/Char4;II)LPdapilot/Resource;",
a, makeJavaChar4(type), (javaint_t)id, (javaint_t)index);
} else if (result != -5) {
throwDlpException(result);
}
free(buffer);
return output;
}
extern javaint_t Pdapilot_calls_dlp_WriteRecord(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Record * record)
{
int attr, cat;
HArrayOfByte * b;
char * buffer;
int len;
recordid_t id;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)record, "pack", "()[B");
if (!b)
return 0;
id = getJavaRecordID(unhand(record)->id);
attr = 0;
attr |= unhand(record)->deleted ? 0x80 : 0;
attr |= unhand(record)->modified ? 0x40 : 0;
attr |= unhand(record)->busy ? 0x20 : 0;
attr |= unhand(record)->secret ? 0x10 : 0;
attr |= unhand(record)->archived ? 0x08 : 0;
cat = unhand(record)->category;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = dlp_WriteRecord(socket, handle, attr, id, cat, buffer, len, &id);
if (result >= 0) {
return id;
} else {
throwDlpException(result);
}
return 0;
}
extern javaint_t Pdapilot_calls_dlp_WriteAppPreference(struct HPdapilot_calls * self, javaint_t socket, HPdapilot_Pref * pref)
{
HArrayOfByte * b;
char * buffer;
int len;
javaint_t creator;
int id, version;
int result;
int backup;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)pref, "pack", "()[B");
if (!b)
return 0;
creator = getJavaChar4(unhand(pref)->creator);
id = unhand(pref)->id;
version = unhand(pref)->version;
backup = unhand(pref)->backup;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = dlp_WriteAppPreference(socket, creator, id, backup, version, buffer, len);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_WriteAppBlock(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_AppBlock * appblock)
{
HArrayOfByte * b;
char * buffer;
int len;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)appblock, "pack", "()[B");
if (!b)
return 0;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = dlp_WriteAppBlock(socket, handle, buffer, len);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_WriteSortBlock(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_SortBlock * sortblock)
{
HArrayOfByte * b;
char * buffer;
int len;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)sortblock, "pack", "()[B");
if (!b)
return 0;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = dlp_WriteSortBlock(socket, handle, buffer, len);
if (result < 0)
throwDlpException(result);
return result;
}
extern javaint_t Pdapilot_calls_dlp_WriteResource(struct HPdapilot_calls * self, javaint_t socket, javaint_t handle, HPdapilot_Resource * resource)
{
char * buffer;
HArrayOfByte * b;
int len;
javaint_t type;
javaint_t id;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)resource, "pack", "()[B");
if (!b)
return 0;
type = unhand(unhand(resource)->type)->value;
id = unhand(resource)->id;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = dlp_WriteResource(socket, handle, type, id, buffer, len);
if (result < 0)
throwDlpException(result);
return result;
}
extern void Pdapilot_memo_Record_unpack(struct HPdapilot_memo_Record * self, struct HArrayOfByte *b)
{
struct Memo m;
unpack_Memo(&m, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->text = m.text ? makeJavaString(m.text, strlen(m.text)) : 0;
free_Memo(&m);
}
extern HArrayOfByte* Pdapilot_memo_Record_pack(struct HPdapilot_memo_Record * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct Memo m;
m.text = makeCString(unhand(self)->text);
len = pack_Memo(&m, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
static void doUnpackCategories(HPdapilot_CategoryAppBlock * self, struct CategoryAppInfo * c)
{
int i;
unhand(self)->categoryLastUniqueID = c->lastUniqueID;
if (!(unhand(self)->categoryName = makeStringArray(16)))
return;
if (!(unhand(self)->categoryID = makeIntArray(16)))
return;
if (!(unhand(self)->categoryRenamed = makeIntArray(16)))
return;
for (i=0;i<16;i++) {
unhand(unhand(self)->categoryName)->body[i] = (HObject*)makeJavaString(c->name[i], strlen(c->name[i]));
unhand(unhand(self)->categoryID)->body[i] = c->ID[i];
unhand(unhand(self)->categoryRenamed)->body[i] = c->renamed[i];
}
}
static void doPackCategories(HPdapilot_CategoryAppBlock * self, struct CategoryAppInfo * c)
{
int i;
c->lastUniqueID = unhand(self)->categoryLastUniqueID;
for (i=0;i<16;i++) {
javaString2CString((HString*)unhand(unhand(self)->categoryName)->body[i], c->name[i], 16);
c->ID[i] = unhand(unhand(self)->categoryID)->body[i];
c->renamed[i] = unhand(unhand(self)->categoryRenamed)->body[i];
}
}
extern void Pdapilot_memo_AppBlock_unpack(struct HPdapilot_memo_AppBlock * self, struct HArrayOfByte *b)
{
struct MemoAppInfo m;
unpack_MemoAppInfo(&m, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &m.category);
unhand(self)->sortByAlpha = m.sortByAlpha;
}
extern HArrayOfByte* Pdapilot_memo_AppBlock_pack(struct HPdapilot_memo_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct MemoAppInfo m;
doPackCategories((HPdapilot_CategoryAppBlock*)self, &m.category);
m.sortByAlpha = unhand(self)->sortByAlpha;
len = pack_MemoAppInfo(&m, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_todo_Record_unpack(struct HPdapilot_todo_Record * self, struct HArrayOfByte *b)
{
struct ToDo t;
unpack_ToDo(&t, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->due = t.indefinite ? makeJavaDateTm(&t.due) : 0;
unhand(self)->priority = t.priority;
unhand(self)->complete = t.complete;
unhand(self)->description = t.description ? makeJavaString(t.description, strlen(t.description)) : 0;
unhand(self)->note = t.note ? makeJavaString(t.note, strlen(t.note)) : 0;
free_ToDo(&t);
}
extern HArrayOfByte* Pdapilot_todo_Record_pack(struct HPdapilot_todo_Record * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct ToDo t;
struct tm * tm;
t.description = unhand(self)->description ? makeCString(unhand(self)->description) : 0;
t.note = unhand(self)->note ? makeCString(unhand(self)->note) : 0;
t.priority = unhand(self)->priority;
t.complete = unhand(self)->complete;
t.indefinite = 1;
if (unhand(self)->due) {
tm = readJavaDateTm(unhand(self)->due);
if (tm) {
t.due = *tm;
t.indefinite = 0;
}
}
len = pack_ToDo(&t, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_todo_AppBlock_unpack(struct HPdapilot_todo_AppBlock * self, struct HArrayOfByte *b)
{
struct ToDoAppInfo t;
unpack_ToDoAppInfo(&t, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &t.category);
unhand(self)->dirty = t.dirty;
unhand(self)->sortByPriority = t.sortByPriority;
}
extern HArrayOfByte* Pdapilot_todo_AppBlock_pack(struct HPdapilot_todo_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct ToDoAppInfo t;
t.sortByPriority = unhand(self)->sortByPriority;
t.dirty = unhand(self)->dirty;
doPackCategories((HPdapilot_CategoryAppBlock*)self, &t.category);
len = pack_ToDoAppInfo(&t, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_CategoryAppBlock_unpack(struct HPdapilot_CategoryAppBlock * self, struct HArrayOfByte *b)
{
struct CategoryAppInfo c;
unpack_CategoryAppInfo(&c, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories(self, &c);
}
extern HArrayOfByte* Pdapilot_CategoryAppBlock_pack(struct HPdapilot_CategoryAppBlock * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct CategoryAppInfo c;
doPackCategories(self, &c);
len = pack_CategoryAppInfo(&c, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_address_Record_unpack(struct HPdapilot_address_Record * self, struct HArrayOfByte *b)
{
struct Address a;
int i;
unpack_Address(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->showPhone = a.showPhone;
if (!(unhand(self)->entry = makeStringArray(19)))
return;
if (!(unhand(self)->phoneLabel = makeIntArray(5)))
return;
for (i=0;i<19;i++)
unhand(unhand(self)->entry)->body[i] = a.entry[i] ? (HObject*)makeJavaString(a.entry[i], strlen(a.entry[i])) : 0;
for (i=0;i<5;i++)
unhand(unhand(self)->phoneLabel)->body[i] = a.phoneLabel[i];
free_Address(&a);
}
extern HArrayOfByte* Pdapilot_address_Record_pack(struct HPdapilot_address_Record * self){
char * buffer = malloc(0xffff);
int len;
int i;
HArrayOfByte * output;
struct Address a;
for (i=0;i<19;i++)
javaString2CString((HString*)unhand(unhand(self)->entry)->body[i], a.entry[i], 16);
for (i=0;i<5;i++)
a.phoneLabel[i] = unhand(unhand(self)->phoneLabel)->body[i];
a.showPhone = unhand(self)->showPhone;
len = pack_Address(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_address_AppBlock_unpack(struct HPdapilot_address_AppBlock * self, struct HArrayOfByte *b)
{
struct AddressAppInfo a;
int i;
unpack_AddressAppInfo(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
if (!(unhand(self)->labelRenamed = makeIntArray(22)))
return;
for(i=0;i<22;i++)
unhand(unhand(self)->labelRenamed)->body[i] = a.labelRenamed[i];
unhand(self)->sortByCompany = a.sortByCompany;
if (!(unhand(self)->label = makeStringArray(22)))
return;
if (!(unhand(self)->phoneLabel = makeStringArray(8)))
return;
for (i=0;i<22;i++)
unhand(unhand(self)->label)->body[i] = (HObject*)makeJavaString(a.labels[i], strlen(a.labels[i]));
for (i=0;i<8;i++)
unhand(unhand(self)->phoneLabel)->body[i] = (HObject*)makeJavaString(a.phoneLabels[i], strlen(a.phoneLabels[i]));
}
extern HArrayOfByte* Pdapilot_address_AppBlock_pack(struct HPdapilot_address_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
int i;
HArrayOfByte * output;
struct AddressAppInfo a;
a.sortByCompany = unhand(self)->sortByCompany;
for(i=0;i<22;i++)
a.labelRenamed[i] = unhand(unhand(self)->labelRenamed)->body[i];
doPackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
for (i=0;i<22;i++)
javaString2CString((HString*)unhand(unhand(self)->label)->body[i], a.labels[i], 16);
for (i=0;i<8;i++)
javaString2CString((HString*)unhand(unhand(self)->phoneLabel)->body[i], a.phoneLabels[i], 16);
len = pack_AddressAppInfo(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_appointment_Record_unpack(struct HPdapilot_appointment_Record * self, struct HArrayOfByte *b)
{
struct Appointment a;
int i;
unpack_Appointment(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->note = a.note ? makeJavaString(a.note, strlen(a.note)) : 0;
unhand(self)->description = a.description ? makeJavaString(a.description, strlen(a.description)) : 0;
unhand(self)->begin = makeJavaDateTm(&a.begin);
unhand(self)->end = a.event ? 0 : makeJavaDateTm(&a.end);
unhand(self)->alarm = a.alarm;
unhand(self)->advance = a.advance;
unhand(self)->advanceUnits = (HPdapilot_appointment_time*)
execute_java_static_method(0, FindClass(0, "Pdapilot/appointment/time",1),
"get", "(I)LPdapilot/appointment/time;", (long)a.advanceUnits);
if (!unhand(self)->advanceUnits)
return;
/*(a.advanceUnits == 0) ? 60 : (a.advanceUnits == 1) ? 60*60 : (a.advanceUnits == 2) ? 60*60*26 : 0;*/
if (a.exceptions) {
if (!(unhand(self)->exceptions = makeDateArray(a.exceptions)))
return;
for(i=0;i<a.exceptions;i++)
unhand(unhand(self)->exceptions)->body[i] = (HObject*)makeJavaDateTm(&a.exception[i]);
}
unhand(self)->repeatDay = a.repeatDay;
unhand(self)->repeatWeekStart = a.repeatWeekstart;
/*unhand(self)->repeatType = a.repeatType;*/
unhand(self)->repeatType = (HPdapilot_appointment_repeat*)
execute_java_static_method(0, FindClass(0, "Pdapilot/appointment/repeat",1),
"get", "(I)LPdapilot/appointment/repeat;", (long)a.repeatType);
if (!unhand(self)->repeatType)
return;
if (!(unhand(self)->repeatWeekdays = makeIntArray(7)))
return;
for(i=0;i<7;i++)
unhand(unhand(self)->repeatWeekdays)->body[i] = a.repeatDays[i];
unhand(self)->repeatEnd = a.repeatForever ? 0 : makeJavaDateTm(&a.repeatEnd);
free_Appointment(&a);
}
extern HArrayOfByte* Pdapilot_appointment_Record_pack(struct HPdapilot_appointment_Record * self){
char * buffer = malloc(0xffff);
int len;
int i;
HArrayOfByte * output;
struct Appointment a;
a.note = unhand(self)->note ? makeCString(unhand(self)->note) : 0;
a.description = unhand(self)->description ? makeCString(unhand(self)->description) : 0;
a.begin = *readJavaDateTm(unhand(self)->begin);
if (unhand(self)->end) {
a.end = *readJavaDateTm(unhand(self)->end);
a.event = 1;
} else {
a.event = 0;
}
a.alarm = unhand(self)->alarm;
a.advance = unhand(self)->advance;
a.advanceUnits = (long)execute_java_dynamic_method(0, (HObject*)unhand(self)->advanceUnits,
"getValue", "()I");
a.repeatType = (long)execute_java_dynamic_method(0, (HObject*)unhand(self)->repeatType,
"getValue", "()I");
if (a.repeatType == repeatWeekly) {
for(i=0;i<7;i++)
a.repeatDays[i] = unhand(unhand(self)->repeatWeekdays)->body[i];
} else {
a.repeatDay = unhand(self)->repeatDay;
}
a.repeatWeekstart = unhand(self)->repeatWeekStart;
if (unhand(self)->repeatEnd) {
a.repeatForever = 0;
a.repeatEnd = *readJavaDateTm(unhand(self)->repeatEnd);
} else
a.repeatForever = 1;
if (unhand(self)->exceptions) {
a.exceptions = getObjectArrayLength(unhand(self)->exceptions);
a.exception = malloc(sizeof(struct tm)*a.exceptions);
for(i=0;i<a.exceptions;i++)
a.exception[i] = *readJavaDateTm((Hjava_util_Date*)unhand(unhand(self)->exceptions)->body[i]);
}
len = pack_Appointment(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_appointment_AppBlock_unpack(struct HPdapilot_appointment_AppBlock * self, struct HArrayOfByte *b)
{
struct AppointmentAppInfo a;
unpack_AppointmentAppInfo(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
unhand(self)->startOfWeek = a.startOfWeek;
}
extern HArrayOfByte* Pdapilot_appointment_AppBlock_pack(struct HPdapilot_appointment_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct AppointmentAppInfo a;
a.startOfWeek = unhand(self)->startOfWeek;
doPackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
len = pack_AppointmentAppInfo(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
/* mail */
extern void Pdapilot_mail_Record_unpack(struct HPdapilot_mail_Record * self, struct HArrayOfByte *b)
{
struct Mail a;
unpack_Mail(&a, unhand(b)->body, getArrayLength(b));
if (a.dated)
unhand(self)->date = makeJavaDateTm(&a.date);
else
unhand(self)->date = 0;
unhand(self)->read = a.read;
unhand(self)->signature = a.signature;
unhand(self)->confirmRead = a.confirmRead;
unhand(self)->confirmDelivery = a.confirmDelivery;
unhand(self)->priority = a.priority;
unhand(self)->addressing = a.addressing;
unhand(self)->subject = a.subject ? makeJavaString(a.subject, strlen(a.subject)) : 0;
unhand(self)->from = a.from ? makeJavaString(a.from, strlen(a.from)) : 0;
unhand(self)->to = a.to ? makeJavaString(a.to, strlen(a.to)) : 0;
unhand(self)->cc = a.cc ? makeJavaString(a.cc, strlen(a.cc)) : 0;
unhand(self)->bcc = a.bcc ? makeJavaString(a.bcc, strlen(a.bcc)) : 0;
unhand(self)->replyTo = a.replyTo ? makeJavaString(a.replyTo, strlen(a.replyTo)) : 0;
unhand(self)->sentTo = a.sentTo ? makeJavaString(a.sentTo, strlen(a.sentTo)) : 0;
unhand(self)->body = a.body ? makeJavaString(a.body, strlen(a.body)) : 0;
free_Mail(&a);
}
extern HArrayOfByte* Pdapilot_mail_Record_pack(struct HPdapilot_mail_Record * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct Mail a;
a.dated = unhand(self)->date ? 1 : 0;
if (a.dated)
a.date = *readJavaDateTm(unhand(self)->date);
a.read = unhand(self)->read;
a.signature = unhand(self)->signature;
a.confirmRead = unhand(self)->confirmRead;
a.confirmDelivery = unhand(self)->confirmDelivery;
a.priority = unhand(self)->priority;
a.addressing = unhand(self)->addressing;
a.subject = unhand(self)->subject ? makeCString(unhand(self)->subject) : 0;
a.from = unhand(self)->from ? makeCString(unhand(self)->from) : 0;
a.to = unhand(self)->to ? makeCString(unhand(self)->to) : 0;
a.cc = unhand(self)->cc ? makeCString(unhand(self)->cc) : 0;
a.bcc = unhand(self)->bcc ? makeCString(unhand(self)->bcc) : 0;
a.replyTo = unhand(self)->replyTo ? makeCString(unhand(self)->replyTo) : 0;
a.sentTo = unhand(self)->sentTo ? makeCString(unhand(self)->sentTo) : 0;
a.body = unhand(self)->body ? makeCString(unhand(self)->body) : 0;
len = pack_Mail(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_mail_AppBlock_unpack(struct HPdapilot_mail_AppBlock * self, struct HArrayOfByte *b)
{
struct MailAppInfo a;
unpack_MailAppInfo(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
unhand(self)->dirty = a.dirty;
unhand(self)->sortOrder = (HPdapilot_mail_sort*)
execute_java_static_method(0, FindClass(0, "Pdapilot/mail/sort",1),
"get", "(I)LPdapilot/mail/sort;", (long)a.sortOrder);
unhand(self)->unsentMessage = a.unsentMessage ? makeJavaRecordID(a.unsentMessage) : 0;
}
extern HArrayOfByte* Pdapilot_mail_AppBlock_pack(struct HPdapilot_mail_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct MailAppInfo a;
doPackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
a.sortOrder = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->sortOrder, "getValue", "()I");
a.dirty = unhand(self)->dirty;
a.unsentMessage = unhand(self)->unsentMessage ? getJavaRecordID(unhand(self)->unsentMessage) : 0;
len = pack_MailAppInfo(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_mail_SyncPref_unpack(struct HPdapilot_mail_SyncPref * self, struct HArrayOfByte *b)
{
struct MailSyncPref a;
unpack_MailSyncPref(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->syncType = (HPdapilot_mail_sync*)
execute_java_static_method(0, FindClass(0, "Pdapilot/mail/sync",1),
"get", "(I)LPdapilot/mail/sync;", (long)a.syncType);
unhand(self)->getHigh = a.getHigh;
unhand(self)->getContaining = a.getContaining;
unhand(self)->truncate = a.truncate;
unhand(self)->filterTo = a.filterTo ? makeJavaString(a.filterTo, strlen(a.filterTo)) : 0;
unhand(self)->filterFrom = a.filterFrom ? makeJavaString(a.filterFrom, strlen(a.filterFrom)) : 0;
unhand(self)->filterSubject = a.filterSubject ? makeJavaString(a.filterSubject, strlen(a.filterSubject)) : 0;
}
extern HArrayOfByte* Pdapilot_mail_SyncPref_pack(struct HPdapilot_mail_SyncPref * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct MailSyncPref a;
a.syncType = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->syncType, "getValue", "()I");
a.getHigh = unhand(self)->getHigh;
a.getContaining = unhand(self)->getContaining;
a.truncate = unhand(self)->truncate;
a.filterTo = unhand(self)->filterTo ? makeCString(unhand(self)->filterTo) : 0;
a.filterFrom = unhand(self)->filterFrom ? makeCString(unhand(self)->filterFrom) : 0;
a.filterSubject = unhand(self)->filterSubject ? makeCString(unhand(self)->filterSubject) : 0;
len = pack_MailSyncPref(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_mail_SignaturePref_unpack(struct HPdapilot_mail_SignaturePref * self, struct HArrayOfByte *b)
{
struct MailSignaturePref a;
unpack_MailSignaturePref(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->signature = a.signature ? makeJavaString(a.signature, strlen(a.signature)) : 0;
}
extern HArrayOfByte* Pdapilot_mail_SignaturePref_pack(struct HPdapilot_mail_SignaturePref * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct MailSignaturePref a;
a.signature = unhand(self)->signature ? makeCString(unhand(self)->signature) : 0;
len = pack_MailSignaturePref(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
/* expense */
extern void Pdapilot_expense_Record_unpack(struct HPdapilot_expense_Record * self, struct HArrayOfByte *b)
{
struct Expense a;
unpack_Expense(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->date = makeJavaDateTm(&a.date);
unhand(self)->type = (HPdapilot_expense_type*)
execute_java_static_method(0, FindClass(0, "Pdapilot/expense/type",1),
"get", "(I)LPdapilot/expense/type;", (long)a.type);
unhand(self)->payment = (HPdapilot_expense_payment*)
execute_java_static_method(0, FindClass(0, "Pdapilot/expense/payment",1),
"get", "(I)LPdapilot/expense/payment;", (long)a.payment);
unhand(self)->amount = a.amount ? makeJavaString(a.amount, strlen(a.amount)) : 0;
unhand(self)->vendor = a.vendor ? makeJavaString(a.vendor, strlen(a.vendor)) : 0;
unhand(self)->city = a.city ? makeJavaString(a.city, strlen(a.city)) : 0;
unhand(self)->attendees = a.attendees ? makeJavaString(a.attendees, strlen(a.attendees)) : 0;
unhand(self)->note = a.note ? makeJavaString(a.note, strlen(a.note)) : 0;
free_Expense(&a);
}
extern HArrayOfByte* Pdapilot_expense_Record_pack(struct HPdapilot_expense_Record * self){
char * buffer = malloc(0xffff);
int len;
HArrayOfByte * output;
struct Expense a;
a.date = *readJavaDateTm(unhand(self)->date);
a.currency = unhand(self)->currency;
a.type = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->type, "getValue", "()I");
a.payment = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->payment, "getValue", "()I");
a.amount = unhand(self)->amount ? makeCString(unhand(self)->amount) : 0;
a.vendor = unhand(self)->vendor ? makeCString(unhand(self)->vendor) : 0;
a.city = unhand(self)->city ? makeCString(unhand(self)->city) : 0;
a.attendees = unhand(self)->attendees ? makeCString(unhand(self)->attendees) : 0;
a.note = unhand(self)->note ? makeCString(unhand(self)->note) : 0;
len = pack_Expense(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_expense_AppBlock_unpack(struct HPdapilot_expense_AppBlock * self, struct HArrayOfByte *b)
{
int i;
struct ExpenseAppInfo a;
stack_item l;
unpack_ExpenseAppInfo(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
l.i = 4;
unhand(self)->currencies = (HArrayOfObject*)MultiArrayAlloc(1,
FindClass(0, "Pdapilot/expense/CustomCurrency",1),
&l);
if (!unhand(self)->currencies)
return;
for(i=0;i<4;i++) {
struct ExpenseCustomCurrency * ecc;
HPdapilot_expense_CustomCurrency * c =
(HPdapilot_expense_CustomCurrency*)execute_java_constructor(0,
"Pdapilot/expense/CustomCurrency", 0, "()");
unhand(unhand(self)->currencies)->body[i] = (HObject*)c;
ecc = &a.currencies[i];
unhand(c)->symbol = ecc->symbol ? makeJavaString(ecc->symbol, strlen(ecc->symbol)) : 0;
unhand(c)->name = ecc->name ? makeJavaString(ecc->name, strlen(ecc->name)) : 0;
unhand(c)->rate = ecc->rate ? makeJavaString(ecc->rate, strlen(ecc->rate)) : 0;
}
doUnpackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
unhand(self)->sortOrder = (HPdapilot_expense_sort*)
execute_java_static_method(0, FindClass(0, "Pdapilot/expense/sort",1),
"get", "(I)LPdapilot/expense/sort;", (long)a.sortOrder);;
}
extern HArrayOfByte* Pdapilot_expense_AppBlock_pack(struct HPdapilot_expense_AppBlock * self){
char * buffer = malloc(0xffff);
int len;
int i;
HArrayOfByte * output;
struct ExpenseAppInfo a;
a.sortOrder = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->sortOrder, "getValue", "()I");
if (unhand(self)->currencies)
for(i=0;i<4;i++) {
HPdapilot_expense_CustomCurrency * c =
(HPdapilot_expense_CustomCurrency*)
unhand(unhand(self)->currencies)->body[i];
if (unhand(c)->name)
javaString2CString(unhand(c)->name, a.currencies[i].name, 16);
else
a.currencies[i].name[0] = 0;
if (unhand(c)->symbol)
javaString2CString(unhand(c)->symbol, a.currencies[i].symbol, 4);
else
a.currencies[i].symbol[0] = 0;
if (unhand(c)->rate)
javaString2CString(unhand(c)->rate, a.currencies[i].rate, 8);
else
a.currencies[i].rate[0] = 0;
}
doPackCategories((HPdapilot_CategoryAppBlock*)self, &a.category);
len = pack_ExpenseAppInfo(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_expense_Pref_unpack(struct HPdapilot_expense_Pref * self, struct HArrayOfByte *b)
{
struct ExpensePref a;
int i;
unpack_ExpensePref(&a, unhand(b)->body, getArrayLength(b));
unhand(self)->raw = b;
unhand(self)->currentCategory = a.currentCategory;
unhand(self)->defaultCategory = a.defaultCategory;
unhand(self)->currentCategory = a.noteFont;
unhand(self)->showAllCategories = a.showAllCategories;
unhand(self)->showCurrency = a.showCurrency;
unhand(self)->saveBackup = a.saveBackup;
unhand(self)->allowQuickFill = a.allowQuickFill;
unhand(self)->unitOfDistance = (HPdapilot_expense_distance*)
execute_java_static_method(0, FindClass(0, "Pdapilot/expense/distance",1),
"get", "(I)LPdapilot/expense/distance;", (long)a.unitOfDistance);
unhand(self)->currencies = makeIntArray(7);
for (i=0;i<7;i++)
unhand(unhand(self)->currencies)->body[i] = a.currencies[i];
}
extern HArrayOfByte* Pdapilot_expense_Pref_pack(struct HPdapilot_expense_Pref * self){
char * buffer = malloc(0xffff);
int len;
int i;
HArrayOfByte * output;
struct ExpensePref a;
a.currentCategory = unhand(self)->currentCategory;
a.defaultCategory = unhand(self)->defaultCategory;
a.noteFont = unhand(self)->currentCategory;
a.showAllCategories = unhand(self)->showAllCategories;
a.showCurrency = unhand(self)->showCurrency;
a.saveBackup = unhand(self)->saveBackup;
a.allowQuickFill = unhand(self)->allowQuickFill;
a.unitOfDistance = (long)execute_java_dynamic_method(0,
(HObject*)unhand(self)->unitOfDistance, "getValue", "()I");
for (i=0;i<7;i++)
a.currencies[i] = unhand(unhand(self)->currencies)->body[i];
len = pack_ExpensePref(&a, buffer, 0xffff);
output = getByteArray(len);
memcpy(unhand(output)->body, buffer, len);
unhand(self)->raw = output;
free(buffer);
return output;
}
extern void Pdapilot_File_pi_file_create(struct HPdapilot_File * self,struct Hjava_lang_String * name,struct HPdapilot_DBInfo * info)
{
struct pi_file * pf;
struct DBInfo dbInfo;
dbInfo.flags =
(unhand(info)->flagReadOnly ? dlpDBFlagReadOnly : 0) |
(unhand(info)->flagResource ? dlpDBFlagResource : 0) |
(unhand(info)->flagBackup ? dlpDBFlagBackup : 0) |
(unhand(info)->flagOpen ? dlpDBFlagOpen : 0) |
(unhand(info)->flagAppInfoDirty ? dlpDBFlagAppInfoDirty : 0) |
(unhand(info)->flagNewer ? dlpDBFlagNewer : 0) |
(unhand(info)->flagReset ? dlpDBFlagReset : 0);
dbInfo.miscFlags = (unhand(info)->flagExcludeFromSync ? dlpDBMiscFlagExcludeFromSync : 0);
dbInfo.version = unhand(info)->version;
dbInfo.modnum = unhand(info)->modnum;
dbInfo.type = getJavaChar4(unhand(info)->type);
dbInfo.creator = getJavaChar4(unhand(info)->creator);
dbInfo.createDate = readJavaDate(unhand(info)->createDate);
dbInfo.modifyDate = readJavaDate(unhand(info)->modifyDate);
dbInfo.backupDate = readJavaDate(unhand(info)->backupDate);
javaString2CString(unhand(info)->name, dbInfo.name, 34);
unhand(self)->_pf = 0;
pf = pi_file_create(makeCString(name), &dbInfo);
if (!pf) {
throwIOException(errno);
return;
}
unhand(self)->_pf = (javaint_t)pf;
}
extern void Pdapilot_File_pi_file_open(struct HPdapilot_File * self,struct Hjava_lang_String * name)
{
struct pi_file * pf = pi_file_open(makeCString(name));
unhand(self)->_pf = 0;
if (!pf) {
throwIOException(errno);
return;
}
unhand(self)->_pf = (javaint_t)pf;
}
extern void Pdapilot_File_pi_file_close(struct HPdapilot_File * self)
{
if (unhand(self)->_pf) {
pi_file_close((struct pi_file*)(unhand(self)->_pf));
unhand(self)->_pf = 0;
}
}
extern void Pdapilot_File_pi_file_install(struct HPdapilot_File * self, javaint_t socket, javaint_t cardno)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int result = pi_file_install(pf, socket, cardno);
if (result<0) {
throwIOException(errno);
}
}
extern void Pdapilot_File_pi_file_retrieve(struct HPdapilot_File * self, javaint_t socket, javaint_t cardno)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int result = pi_file_retrieve(pf, socket, cardno);
if (result<0) {
throwIOException(errno);
}
}
extern void Pdapilot_File_pi_file_merge(struct HPdapilot_File * self, javaint_t socket, javaint_t cardno)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int result = pi_file_merge(pf, socket, cardno);
if (result<0) {
throwIOException(errno);
}
}
extern javaint_t Pdapilot_File_pi_file_get_entries(struct HPdapilot_File * self)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int entries;
int result = pi_file_get_entries(pf, &entries);
if (result < 0) {
throwIOException(errno);
return 0;
}
return entries;
}
extern struct HPdapilot_Record *Pdapilot_File_pi_file_read_record(struct HPdapilot_File * self, javaint_t index ,struct HPdapilot_Database * dbClass)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int attr, cat;
recordid_t id;
int len;
void * buffer;
HPdapilot_Record * output = NULL;
int result = pi_file_read_record(pf, index, &buffer, &len, &attr, &cat, &id);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else {
throwIOException(errno);
return 0;
}
return output;
}
extern struct HPdapilot_Resource *Pdapilot_File_pi_file_read_resource(struct HPdapilot_File * self, javaint_t index ,struct HPdapilot_Database * dbClass)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int id;
unsigned long type;
int len;
void * buffer;
HPdapilot_Resource * output = NULL;
int result = pi_file_read_resource(pf, index, &buffer, &len, &type, &id);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Resource*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newResource", "([BLPdapilot/Char4;II)LPdapilot/Resource;",
a, type, (javaint_t)id, (javaint_t)index);
} else {
throwIOException(errno);
return 0;
}
return output;
}
extern struct HPdapilot_Record *Pdapilot_File_pi_file_read_record_by_id(struct HPdapilot_File * self, struct HPdapilot_RecordID * jid ,struct HPdapilot_Database * dbClass)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int attr, cat, index;
recordid_t id = getJavaRecordID(jid);
int len;
void * buffer;
HPdapilot_Record * output = NULL;
int result = pi_file_read_record_by_id(pf, id, &buffer, &len, &index, &attr, &cat);
if (result >= 0) {
HArrayOfByte * a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_Record*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newRecord", "([BLPdapilot/RecordID;III)LPdapilot/Record;",
a, makeJavaRecordID(id), (javaint_t)index, (javaint_t)attr, (javaint_t)cat);
} else {
throwIOException(errno);
return 0;
}
return output;
}
extern struct HPdapilot_DBInfo * Pdapilot_File_pi_file_get_info(struct HPdapilot_File * self)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
struct HPdapilot_DBInfo * output;
struct DBInfo i;
if (pi_file_get_info(pf, &i)<0) {
throwIOException(errno);
return 0;
}
output = (HPdapilot_DBInfo*)execute_java_constructor(0,
"Pdapilot/DBInfo", 0, "()");
unhand(output)->flagReadOnly = !!(i.flags & dlpDBFlagReadOnly);
unhand(output)->flagResource = !!(i.flags & dlpDBFlagResource);
unhand(output)->flagBackup = !!(i.flags & dlpDBFlagBackup);
unhand(output)->flagOpen = !!(i.flags & dlpDBFlagOpen);
unhand(output)->flagAppInfoDirty = !!(i.flags & dlpDBFlagAppInfoDirty);
unhand(output)->flagNewer = !!(i.flags & dlpDBFlagNewer);
unhand(output)->flagReset = !!(i.flags & dlpDBFlagReset);
unhand(output)->flagExcludeFromSync = !!(i.miscFlags & dlpDBMiscFlagExcludeFromSync);
unhand(output)->index = i.index;
unhand(output)->version = i.version;
unhand(output)->modnum = i.modnum;
unhand(output)->type = makeJavaChar4(i.type);
unhand(output)->creator = makeJavaChar4(i.creator);
unhand(output)->createDate = makeJavaDate(i.createDate);
unhand(output)->modifyDate = makeJavaDate(i.modifyDate);
unhand(output)->backupDate = makeJavaDate(i.backupDate);
unhand(output)->name = makeJavaString(i.name, strlen(i.name));
unhand(output)->card = 0;
unhand(output)->more = i.more;
return output;
}
extern void Pdapilot_File_pi_file_set_info(struct HPdapilot_File * self, struct HPdapilot_DBInfo * info)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
struct DBInfo dbInfo;
dbInfo.flags =
(unhand(info)->flagReadOnly ? dlpDBFlagReadOnly : 0) |
(unhand(info)->flagResource ? dlpDBFlagResource : 0) |
(unhand(info)->flagBackup ? dlpDBFlagBackup : 0) |
(unhand(info)->flagOpen ? dlpDBFlagOpen : 0) |
(unhand(info)->flagAppInfoDirty ? dlpDBFlagAppInfoDirty : 0) |
(unhand(info)->flagNewer ? dlpDBFlagNewer : 0) |
(unhand(info)->flagReset ? dlpDBFlagReset : 0);
dbInfo.miscFlags = (unhand(info)->flagExcludeFromSync ? dlpDBMiscFlagExcludeFromSync : 0);
dbInfo.version = unhand(info)->version;
dbInfo.modnum = unhand(info)->modnum;
dbInfo.type = getJavaChar4(unhand(info)->type);
dbInfo.creator = getJavaChar4(unhand(info)->creator);
dbInfo.createDate = readJavaDate(unhand(info)->createDate);
dbInfo.modifyDate = readJavaDate(unhand(info)->modifyDate);
dbInfo.backupDate = readJavaDate(unhand(info)->backupDate);
javaString2CString(unhand(info)->name, dbInfo.name, 34);
if (pi_file_set_info(pf, &dbInfo)<0)
throwIOException(errno);
}
extern void Pdapilot_File_pi_file_set_app_info(struct HPdapilot_File * self, struct HPdapilot_AppBlock * appblock)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
HArrayOfByte * b;
char * buffer;
int len;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)appblock, "pack", "()[B");
if (!b)
return;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = pi_file_set_app_info(pf, buffer, len);
if (result < 0)
throwIOException(errno);
}
extern struct HPdapilot_AppBlock *Pdapilot_File_pi_file_get_app_info(struct HPdapilot_File * self, HPdapilot_Database * dbClass)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
void * buffer;
int len;
HPdapilot_AppBlock * output;
int result = pi_file_get_app_info(pf, &buffer, &len);
if (result >= 0) {
HArrayOfByte * a;
len = result;
a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_AppBlock*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newAppBlock", "([B)LPdapilot/AppBlock;",
a);
} else {
throwIOException(errno);
return 0;
}
return output;
}
extern struct HPdapilot_SortBlock *Pdapilot_File_pi_file_get_sort_info(struct HPdapilot_File * self, HPdapilot_Database * dbClass)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
void * buffer;
int len;
HPdapilot_SortBlock * output;
int result = pi_file_get_app_info(pf, &buffer, &len);
if (result >= 0) {
HArrayOfByte * a;
len = result;
a = getByteArray(len);
memcpy(unhand(a)->body, buffer, len);
output = (HPdapilot_SortBlock*)execute_java_dynamic_method(0, (HObject*)dbClass,
"newSortBlock", "([B)LPdapilot/SortBlock;",
a);
} else {
throwIOException(errno);
return 0;
}
return output;
}
extern void Pdapilot_File_pi_file_set_sort_info(struct HPdapilot_File * self, struct HPdapilot_SortBlock * sortblock)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
HArrayOfByte * b;
char * buffer;
int len;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)sortblock, "pack", "()[B");
if (!b)
return;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = pi_file_set_sort_info(pf, buffer, len);
if (result < 0)
throwIOException(errno);
}
extern void Pdapilot_File_pi_file_append_record(struct HPdapilot_File * self, HPdapilot_Record * record)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
int attr, cat;
HArrayOfByte * b;
char * buffer;
int len;
recordid_t id;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)record, "pack", "()[B");
if (!b)
return;
id = getJavaRecordID(unhand(record)->id);
attr = 0;
attr |= unhand(record)->deleted ? 0x80 : 0;
attr |= unhand(record)->modified ? 0x40 : 0;
attr |= unhand(record)->busy ? 0x20 : 0;
attr |= unhand(record)->secret ? 0x10 : 0;
attr |= unhand(record)->archived ? 0x08 : 0;
cat = unhand(record)->category;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = pi_file_append_record(pf, buffer, len, attr, cat, id);
if (result < 0)
throwIOException(errno);
}
extern void Pdapilot_File_pi_file_append_resource(struct HPdapilot_File * self, HPdapilot_Resource * resource)
{
struct pi_file * pf = (struct pi_file*)unhand(self)->_pf;
char * buffer;
HArrayOfByte * b;
int len;
javaint_t type;
javaint_t id;
int result;
b = (HArrayOfByte*)execute_java_dynamic_method(0, (HObject*)resource, "pack", "()[B");
if (!b)
return;
type = unhand(unhand(resource)->type)->value;
id = unhand(resource)->id;
buffer = unhand(b)->body;
len = getArrayLength(b);
result = pi_file_append_resource(pf, buffer, len, type, id);
if (result < 0)
throwIOException(errno);
}